/**
 * 文件上传控制器
 * @module controllers/uploadController
 */

const path = require('path');
const fs = require('fs');
require('dotenv').config();

/**
 * 上传图片
 * @param {Object} req - 请求对象
 * @param {Object} res - 响应对象
 * @returns {Object} 响应对象
 */
const uploadImage = async (req, res) => {
  try {
    // 文件由multer中间件处理
    if (!req.file) {
      return res.status(400).json({ message: '未提供图片文件' });
    }
    
    // 获取文件信息
    const { filename, path: filePath, size } = req.file;
    
    // 构建文件URL
    const fileUrl = `/uploads/${filename}`;
    
    return res.status(201).json({
      message: '图片上传成功',
      file: {
        filename,
        path: fileUrl,
        size
      }
    });
  } catch (error) {
    console.error('上传图片错误:', error);
    return res.status(500).json({ message: '服务器错误' });
  }
};

/**
 * 删除上传的文件
 * @param {Object} req - 请求对象
 * @param {Object} res - 响应对象
 * @returns {Object} 响应对象
 */
const deleteFile = async (req, res) => {
  try {
    const { filename } = req.params;
    
    // 安全检查：确保文件名不包含路径分隔符
    if (filename.includes('/') || filename.includes('\\')) {
      return res.status(400).json({ message: '无效的文件名' });
    }
    
    // 构建文件路径
    const uploadPath = process.env.UPLOAD_PATH || './src/uploads';
    const filePath = path.join(uploadPath, filename);
    
    // 检查文件是否存在
    if (!fs.existsSync(filePath)) {
      return res.status(404).json({ message: '文件不存在' });
    }
    
    // 删除文件
    fs.unlinkSync(filePath);
    
    return res.status(200).json({ message: '文件删除成功' });
  } catch (error) {
    console.error('删除文件错误:', error);
    return res.status(500).json({ message: '服务器错误' });
  }
};

module.exports = {
  uploadImage,
  deleteFile
}; 